import java.util.HashMap;
import java.util.Map;

public class 和为K的子数组 {
    public int subarraySum(int[] nums, int k) {
        Map<Integer,Integer> map = new HashMap<>(); // key 为 前缀和, value 为数量
        map.put(0,1); // 前缀和为 0 的, 默认为 1
        int ans = 0; // 返回值
        for (int i = 0,sum = 0; i < nums.length; i++) {
            sum += nums[i]; // 前缀和
            ans += map.getOrDefault(sum - k,0); // 每次如果有这个值, 就加上次数
            map.put(sum,map.getOrDefault(sum,0) + 1); // 更新一下当前前缀和的次数
        }
        return ans;
    }
}
